// 路由权限控制
// 进行权限拦截
import router from '@/router'
import * as auth from '@/utils/auth'
import nProgress from 'nprogress'
import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/user'

// 定义拦截白名单
const whiteList = ['/login', '/404']

router.beforeEach(async (to, from, next) => {
  const token = auth.getToken()
  if (token) {
    // 有token，说明已登录，再判断是否去的是登录页
    if (to.path === '/login') {
      // 强制跳转到主页
      next('/')
    } else {
      // 不是前往登录页面，获取登录员工的信息
      try {
        const userStore = useUserStore()
        // // 只有在没有获取的情况下，才会主动获取员工信息
        // if (userStore.isEmpty()) {
        //   await userStore.getUserInfo()
        // }
      } catch (e) {
        return
      } finally {
        next()
      }
    }
  } else {
    // 没有token，说明没有登录，判断是否前往无需登录的页面
    if (whiteList.indexOf(to.path) > -1) {
      // 在白名单，放行
      next()
    } else {
      // 不在白名单，强制跳转到登录页
      ElMessage.warning('请先登录!')
      next('/login')
    }
  }

  nProgress.done() // 手动强制关闭一次  为了解决 手动切换地址时  进度条的不关闭的问题
})

router.afterEach(() => {
  nProgress.done()
})

